﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aeroporto.modelo;
using Aeroporto.bd;
using System.Data;
using System.Collections;
using System.Windows.Forms;

namespace Aeroporto.controle
{
    class AssentoControl
    {
        private AssentoDAO bd_assento = new AssentoDAO();

        public DataTable lista_dados(string tabela,string campo,string valor)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_assento.lista_dados(tabela,campo,valor);
            }catch(Exception e){
                Arquivo.escrever(e.ToString());
            }

            return datatable;

        }

        public DataTable pesquisar_codigo(string codigo)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_assento.pesquisar("assento","cod_aeronave",codigo);
            }
            catch(Exception e){
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public String valida_codAeronave(string codigo)
        {
            if (bd_assento.existe_registro("aeronave", "cod_aeronave", codigo) == true)
            {
                return codigo;
            }
            else
            {
                return null;
            }

        }

        public MyMessageBox valida_assento(string fila,string numero,string cod_aeronave,string classe)
        {
            
            if (fila == "" || cod_aeronave == "" || classe == "" || numero == "")
            {
                return new MyMessageBox("Preencha todos os campos", "Campo em branco");
            }
            else
            {
                int numeroC = 0;

                try
                {
                    numeroC = Convert.ToInt32(numero);
                }
                catch(Exception e)
                {
                    Arquivo.escrever(e.ToString());
                    return new MyMessageBox("Insira apenas numeros","Campo numero");
                }
                if (bd_assento.existe_assento("assento", "fila", "numero", "cod_aeronave", fila, numeroC, cod_aeronave) == true)
                {
                    return new MyMessageBox("Registro já existe", "Assento ja cadastrado");
                }
                else
                {
                    return null;
                }
            }
        }


        public MyMessageBox valida_update_assento(string te_fila,string te_numero,string te_codAeronave,string te_classe,string filaAntiga,int numeroAntigo,string codAntigo)
        {
            if (te_fila == "" || te_codAeronave == "" || te_classe == "" || te_numero == "")
            {
                return new MyMessageBox("Preencha os campos", "Campos em branco");
            }
            else
            {
                int numero=0;
                try
                {
                    numero = Convert.ToInt32(te_numero);
                }catch(Exception e){
                    Arquivo.escrever(e.ToString());
                    return new MyMessageBox("Insira apenas numeros","Campo numero");                    
                }

                if (filaAntiga != te_fila || numeroAntigo != numero || codAntigo != te_codAeronave)
                {
                    return new MyMessageBox("a fila,numero e codigo não pode ser alterado", "Assento");
                }
                else
                {
                    AssentoModel assento = new AssentoModel(te_fila,numero,te_codAeronave,te_classe);

                    if (bd_assento.update_dados(assento))
                    {
                        return new MyMessageBox("Assento atualizado!", "Assento");
                    }
                    else
                    {
                        return new MyMessageBox("Erro ao atualizar","Erro");
                    }

                }
            }
        }


        public MyMessageBox valida_insert_assento(string te_fila,string te_numero,string te_cod_aeronave,string te_classe)        
        {
            MyMessageBox mb = valida_assento(te_fila,te_numero,te_cod_aeronave,te_classe);

            if (mb != null)
            {
                return mb;
            }
            else
            {
                int numero = 0;
                try
                {
                    numero = Convert.ToInt32(te_numero);
                }catch(Exception e){
                    Arquivo.escrever(e.ToString());
                    return new MyMessageBox("Insira apenas numeros","Campo Numero");
                }
                
                string fila = te_fila;
                string cod_aeronave = te_cod_aeronave;
                string classe = te_classe;

                IGenericModel generic_model = new AssentoModel(fila,numero,cod_aeronave,classe);

                if (bd_assento.gravar_dados(generic_model))
                {
                    mb = new MyMessageBox("Assento cadastrado!", "Cadastro");
                }
                else
                {
                    mb = new MyMessageBox("Erro no cadastro","Erro");
                }
                return mb;
            }
        }


        public MyMessageBox exclui_assento(string fila,int numero,string cod_aeronave)
        {
            return bd_assento.excluir_assento("assento",fila,numero,cod_aeronave);
        }

    }
}
